﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using DBAccess;
using SSPharma.Model;
using SSPharma.Common;
using SSPharma.Biz.Common;
using System.Data;


namespace SSPharma.Biz.NhanSu
{
    public class BizDSNhanSu
    {

        #region Constant

        public const string MENU_IMG_PATH = "../../Resources/Closed_book.png";
        public const string SCR_IMG_PATH = "../../Resources/Screen.png";
        public const string ROOT_MENU = "RootMenu";
        //khai báo hàm Common dùng để lấy các hàm dùng chung
        private BizCommon _BizCommon = new BizCommon();
        #endregion

        #region Public Methods
        public List<MenuNhanSu> DSDanhMuc_Menu()
        {
            List<MenuNhanSu> items = new List<MenuNhanSu>();
            MenuNhanSu item;
            string strDepartId = string.Empty;
            string strDepart_Sub = string.Empty;
            string strDepartName = string.Empty;
            string strParentId = string.Empty;
            string strOrg = string.Empty;

            StringBuilder strSQL = new StringBuilder(300);

            strSQL.Append(" SELECT * FROM (");
            strSQL.Append(" SELECT STT = 1,DepartId = ID_ORG,Depart_Sub=Ma_ORG,DepartName = Ten_ORG,ParentId = ID_ORGCha,ORGID = ''");
            strSQL.Append(" FROM HT_ORG where Active = @Active");
            strSQL.Append(" UNION ALL");
            strSQL.Append(" SELECT STT = 2,DepartId,Depart_Sub,DepartName,ParentId,ORGID");
            strSQL.Append(" FROM HT_MenuNhanSu WHERE Active = @Active");
            strSQL.Append(" ) A ORDER BY STT,a.ParentId");
             
            SQLServer.Param[] Params = new SQLServer.Param[1];
            Params[0] = new SQLServer.Param("@Active",true);

            using (DbDataReader dataReader = Global.DataFactory.Reader(strSQL.ToString(), Params))
            {
                if (dataReader.HasRows)
                {
                    while (dataReader.Read())
                    {
                        strDepartId = dataReader.IsDBNull(1) ? string.Empty : dataReader.GetString(1);
                        strDepart_Sub = dataReader.IsDBNull(2) ? string.Empty : dataReader.GetString(2);
                        strDepartName = dataReader.IsDBNull(3) ? string.Empty : dataReader.GetString(3);
                        strParentId = dataReader.IsDBNull(4) ? string.Empty : dataReader.GetString(4);
                        strOrg = dataReader.IsDBNull(5) ? string.Empty : dataReader.GetString(5);
                        item = new MenuNhanSu();
                        item.IconPath = MENU_IMG_PATH;
                        item.DepartId = strDepartId;
                        item.Depart_Sub = strDepart_Sub;
                        item.DepartName= strDepartName;
                        if(string.IsNullOrEmpty(strParentId) && string.IsNullOrEmpty(strOrg))
                            item.ParentId = ROOT_MENU;
                        else if(string.IsNullOrEmpty(strParentId) && !string.IsNullOrEmpty(strOrg))
                            item.ParentId = strOrg;
                        else
                            item.ParentId = strParentId;
                        item.ORGID = strOrg;
                        items.Add(item);
                    }
                }
            }

            return items;
        }
        #region dùng cho danh sách
        /// <summary>
        /// User: TAMNN 04/08/2014
        /// Mục đích: Lấy cấu trúc các cột,chiều dài,thứ tự... của các cột cần hiển thi
        /// </summary>
        /// <param name="_tenform">Tên bảng của danh mục đó trong database</param>
        /// <returns></returns>
        public DataTable ft_DSDinhDangLuoi(string _tenform)
        {
            string strQuery = "Select * from HT_DinhDangHTDM where TenBang =@TenBang order by STT";
            SQLServer.Param[] Params = new SQLServer.Param[1];
            Params[0] = new SQLServer.Param("@TenBang", _tenform);
            return Global.DataFactory.GetDataTable(strQuery.ToString(), Params);
        }
        /// <summary>
        /// User: TAMNN 04/08/2014
        /// Mục đích: Xóa dữ liệu
        /// </summary>
        /// <param name="_tenbang">tên bảng của danh mục đó trong database</param>
        /// <param name="ListKhoaChinh">List khóa chính</param>
        /// <param name="Values">List giá trị tương ứng với khóa chính đó</param>
        /// <returns></returns>
        public string fs_DeleteData(string values)
        {
            string strSQL = string.Empty;
            strSQL += " delete HT_MenuNhanSu";
            strSQL += " where DepartId =@DepartId";
            SQLServer.Param[] Params = new SQLServer.Param[1];
            Params[0] = new SQLServer.Param("@DepartId", values);
            using (DbDataReader dataReader = Global.DataFactory.Reader(strSQL.ToString(), Params))
            {
                if (dataReader.HasRows)
                {
                    return dataReader.GetSchemaTable().Rows[0][0].ToString();
                }
            }
            return "Xóa thành Công";
        }
        /// <summary>
        /// User: TAMNN 23/07/2014
        /// Mục đích: lấy danh sách theo danh mục
        /// </summary>
        /// <returns></returns>
        public DataTable ft_GetListdata(string p_sDepart,string p_sOrgId,string P_sDieuKienTim)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" SELECT STT,MaNhanVien,Ho,Ten,GioiTinh,NgaySinh = convert(varchar(10),NgaySinh,103),NoiSinh,SoCMND,NgayCap = convert(varchar(10),NgayCap,103),NoiCap");
            strSQL.Append(" FROM HR_NhanVien");
            strSQL.Append(" WHERE (ID_ORG = @OrgId OR isnull(@OrgId,'')='') AND (ID_DEPART =@DepartId OR isnull(@DepartId,'') ='') and "+P_sDieuKienTim);
            SQLServer.Param[] Params = new SQLServer.Param[2];
            Params[0] = new SQLServer.Param("@DepartId", p_sDepart);
            Params[1] = new SQLServer.Param("@OrgId", p_sOrgId);
            return Global.DataFactory.GetDataTable(strSQL.ToString(),Params);
        }
        /// <summary>
        /// User: TAMNN 15/08/2014
        /// Mục đích: điều kiện tìm kiếm
        /// </summary>
        /// <returns></returns>
        public IList<cboCommon> fl_DieuKienTimKiem()
        {
            List<cboCommon> items = new List<cboCommon>() 
            {
                new cboCommon()
                {
                    Id = "MaNhanVien",
                    Name = "Mã số"
                },
                 new cboCommon()
                {
                    Id = "HoTen",
                    Name = "Họ và tên"
                },
                 new cboCommon()
                {
                    Id = "NgaySinh",
                    Name = "Ngày sinh"
                },
                  new cboCommon()
                {
                    Id = "ChucVu",
                    Name = "Chức vụ"
                },
                  new cboCommon()
                {
                    Id = "DiaChi",
                    Name = "Địa chỉ"
                }
            };
            return items;
        }
        #endregion

        #endregion
    }
}
